﻿Namespace Email.Dominio
    ''' <summary>
    ''' Classe que envia emails assincronos utilizando uma fila 
    ''' </summary>
    ''' <remarks></remarks>
    Public Class Email

        Private _Id As Nullable(Of Integer)

        ''' <summary>
        ''' Identficiador da mensagem
        ''' </summary>
        ''' <value>Inteiro</value>
        ''' <returns>Inteiro</returns>
        ''' <remarks></remarks>
        Public Overridable Property Id() As Nullable(Of Integer)
            Get
                Return _Id
            End Get
            Set(ByVal value As Nullable(Of Integer))
                _Id = value
            End Set
        End Property

        Private _Descricao As String

        ''' <summary>
        ''' Descrição da mensagem de e-mail 
        ''' </summary>
        ''' <value> String</value>
        ''' <returns>String</returns>
        ''' <remarks></remarks>
        Public Overridable Property Descricao() As String
            Get 
                Return _Descricao
            End Get
            Set(ByVal value As String)
                _Descricao = value
            End Set
        End Property

        Private _ArquivoCorpoEmail As String

        ''' <summary>
        ''' Arquivo do corpo do e-mail
        ''' </summary>
        ''' <value>String</value>
        ''' <returns>String</returns>
        ''' <remarks></remarks>
        Public Overridable Property ArquivoCorpoEmail() As String
            Get
                Return _ArquivoCorpoEmail
            End Get
            Set(ByVal value As String)
                _ArquivoCorpoEmail = value
            End Set
        End Property

        Private _Texto As String

        ''' <summary>
        ''' Texto do e-mail
        ''' </summary>
        ''' <value>String</value>
        ''' <returns>String</returns>
        ''' <remarks></remarks>
        Public Overridable Property Texto() As String
            Get
                Return _Texto
            End Get
            Set(ByVal value As String)
                _Texto = value
            End Set
        End Property

        Private _TextoHtml As String

        ''' <summary>
        ''' Texto HTML do e-mail
        ''' </summary>
        ''' <value>String</value>
        ''' <returns>String</returns>
        ''' <remarks></remarks>
        Public Overridable Property TextoHtml() As String
            Get
                Return _TextoHtml
            End Get
            Set(ByVal value As String)
                _TextoHtml = value
            End Set
        End Property

        Private _Assunto As String

        ''' <summary>
        ''' Assunto do E-mail
        ''' </summary>
        ''' <value>String</value>
        ''' <returns>String</returns>
        ''' <remarks></remarks>
        Public Overridable Property Assunto() As String
            Get
                Return _Assunto
            End Get
            Set(ByVal value As String)
                _Assunto = value
            End Set
        End Property

        Private _CC As String

        ''' <summary>
        ''' Envio de cópia do e-mail visível a todos
        ''' </summary>
        ''' <value>String</value>
        ''' <returns>String</returns>
        ''' <remarks></remarks>
        Public Overridable Property CC() As String
            Get
                Return _CC
            End Get
            Set(ByVal value As String)
                _CC = value
            End Set
        End Property

        Private _BCC As String

        ''' <summary>
        ''' Envio de cópia do e-mail não visível a todos
        ''' </summary>
        ''' <value>String</value>
        ''' <returns>String</returns>
        ''' <remarks></remarks>
        Public Overridable Property BCC() As String
            Get
                Return _BCC
            End Get
            Set(ByVal value As String)
                _BCC = value
            End Set
        End Property

        Private _ReplyTo As String

        ''' <summary>
        ''' Resposta automática de e-mail
        ''' </summary>
        ''' <value>String</value>
        ''' <returns>String</returns>
        ''' <remarks></remarks>
        Public Overridable Property ReplyTo() As String
            Get
                Return _ReplyTo
            End Get
            Set(ByVal value As String)
                _ReplyTo = value
            End Set
        End Property

        Private _EmailEnvioConta As EmailEnvioConta

        ''' <summary>
        ''' Envio da conta de e-mail
        ''' </summary>
        ''' <value>EmailEnvioConta(classe EmailEnvioConta)</value>
        ''' <returns>EmailEnvioConta(classe EmailEnvioConta)</returns>
        ''' <remarks></remarks>
        Public Overridable Property EmailEnvioConta() As EmailEnvioConta
            Get
                Return _EmailEnvioConta
            End Get
            Set(ByVal value As EmailEnvioConta)
                _EmailEnvioConta = value
            End Set
        End Property

        Private _Anexos As IList(Of EmailAnexo)

        ''' <summary>
        ''' Lista de Anexos do e-mail
        ''' </summary>
        ''' <value>Lista(classe EmailAnexo)</value>
        ''' <returns>Lista(classe EmailAnexo)</returns>
        ''' <remarks></remarks>
        Public Overridable Property Anexos() As IList(Of EmailAnexo)
            Get
                Return _Anexos
            End Get
            Set(ByVal value As IList(Of EmailAnexo))
                _Anexos = value
            End Set
        End Property

    End Class
End Namespace
